/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.dwh.trigger;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Representa una trama de un trigger, contiene la trama (plot), la fecha del
 * trigger, el tipo (T3, T4, etc), el nombre de la SLU origen y el nombre de 
 * la cola destino.
 * @author Jose Carlos Palma
 * @version v1.0
 */
public class Trigger {

    /**
     * Indica el formato de fecha para los triggers.
     */
    private static final SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd HH:mm:ss");
    /**
     * Trama del trigger.
     */
    private StringBuilder plot;
    /**
     * Fecha del trigger.
     */
    private Date date;
    /**
     * Tipo del trigger (T3, T4, etc).
     */
    private String type;
    /**
     * Nombre de la SLU originante.
     */
    private String sluName;
    /**
     * Nombre de la Cola destino.
     */
    private String queueName;

    /**
     * Crea una instancia de Trigger.
     * @param date Fecha del trigger.
     * @param plot Trama del trigger.
     * @param type Tipo de trigger.
     * @param sluName Nombre de la SLU.
     * @param queueName Nombre de la Cola.
     */
    public Trigger(Date date, StringBuilder plot, String type, String sluName, String queueName) {
        this.date = date;
        this.plot = plot;
        this.type = type;
        this.sluName = sluName;
        this.queueName = queueName;
    }

    /**
     * Crea una instancia de Trigger y la fecha es calculada en el contructor.
     * @param plot Trama del trigger.
     * @param type Tipo de trigger.
     * @param sluName Nombre de la SLU.
     * @param queueName Nombre de la Cola.
     */
    public Trigger(StringBuilder plot, String type, String sluName, String queueName) {
        this(new Date(), plot, type, sluName, queueName);
    }

    /**
     * Devuelve la trama del trigger.
     * @return Trama del trigger.
     */
    public String toPlot() {
        return Trigger.sdf.format(this.date) + " " + this.plot.toString();
    }

    /**
     * Devuelve la representacion en cadena del trigger.
     * @return Representacion del trigger.
     */
    @Override
    public String toString() {
        return "[" + sluName + "-" + queueName + ": " + Trigger.sdf.format(this.date) 
             + " " + this.plot.toString() + "]";
    }

    /**
     * Devuelve el nombre de la fecha del trigger.
     * @return la fecha del trigger.
     */
    public String getDateName() {
        return Trigger.sdf.format(date);
    }
}
